#ifndef TUPLA_H
#define TUPLA_H

template <class T1, class T2 = T1, class T3 = T1, class T4 = T1>
class Tupla
{
public:
	Tupla(){}
	Tupla(const T1& dato1);
	Tupla(const T1& dato1, const T2& dato2);
	Tupla(const T1& dato1, const T2& dato2, const T3& dato3);
	Tupla(const T1& dato1, const T2& dato2, const T3& dato3, const T4& dato4);
	Tupla(const Tupla<T1, T2, T3, T4>& tupla);
	virtual ~Tupla();

	const Tupla<T1, T2, T3, T4>& operator=(const Tupla<T1, T2, T3, T4>& tupla);

	T1& GetDato1();
	T2& GetDato2();
	T3& GetDato3();
	T4& GetDato4();

private:
	T1 m_Dato1;
	T2 m_Dato2;
	T3 m_Dato3;
	T4 m_Dato4;
};

#include "Tupla.cpp"

#endif